#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QProcess>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <windows.h>
#include <QLabel>
#include <QTimer>
#include <digitalclock.h>
#include <QMessageBox>
#include <editwidget.h>
#include <controlwidget.h>
#include <QPixmap>
#include <QImage>
#include <QToolButton>
#include <QSpacerItem>
#include <QFile>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    double timeValueSum = 5100.0;  //总时间（秒）
    int hourValue = 1; //小时数
    int minValue  = 25; //分钟数
    int secValue  = 0; //秒数
    bool isWorking = false;  //是否正在计时的状态标志
    bool isPin = false;      //是否被钉在屏幕最上层

    QProcess pro;     //执行Windows指令
    QTimer *myTimer;  //计时器

    QHBoxLayout *mainLayout; //主布局

    QHBoxLayout *toolbarLayout; //工具栏布局
    QSpacerItem *toolBarSpacer; //工具栏弹簧
    QToolButton *closeButton;   //关闭按钮
    QToolButton *miniButton;    //最小化按钮
    QToolButton *pinButton;     //固定按钮

    QLabel *infoLabel;        //提示Label
    QVBoxLayout *infoLayout;  //数据展示布局
    DigitalClock *timerLCD;   //定时时间展示控件
    QLineEdit *delayMinLine;  //延迟时间输入框

    EditWidget *editeWidget;        //编辑页
    controlWidget *controlwidget;   //控制页

    void Fun_shutdown();             //执行关机指令
    void Fun_cancelShutdown();       //执行取消关闭指令
    void Fun_updataLcdNumber();      //更新LCD函数
    void Fun_updateControlWidget();  //更新控制界面
    void Fun_stopTimer();    //暂停函数
    void Fun_startTimer();   //开始函数

    void slot_onTimeout();
    void slot_changeWorkingState();     //根据用户对controlWidget的操作，改变计时器工作状态
    void slot_onClickedLcdNumber();     //点击LCDNumber函数
    void slot_changeTimeValue(int,int,int);  //改变时间值
    void slot_onClickedMiniButton();   //最小化按钮槽函数
    void slot_onClickedCloseButton();  //关闭按钮槽函数
    void slot_onClickedPinButton();    //Pin按钮槽函数
    QPoint p;
    void mousePressEvent(QMouseEvent *e);   //重写鼠标点击事件
    void mouseMoveEvent(QMouseEvent *e);    //重写鼠标拖动事件
signals:
    void signal_changeCurrentPercentage(double);
};
#endif // WIDGET_H
